Within modern digital systems, large amounts of data are transferred among different nodes. In many cases, the data is transferred between two different types of interfaces. An example of such a data transfer is the exchange of data between a memory mapped interface and a streaming interface. Data transmission between interfaces requires the use of memory. The memory temporarily stores a received data packet prior to forwarding the data packet on to another node in the digital system. The size of the memory needed to facilitate the data transfer is typically dictated by the size of the largest data packet that will be transmitted. Because a data packet is received in its entirety and stored in the memory prior to sending the data packet on to another node, the memory must be at least as large as the largest data packet to be processed.
Increasing levels of interaction between systems means that the amount of data being shared continues to grow. To support this increased data sharing, larger data packets are used, thereby requiring ever larger memories to facilitate the data transfers. The inclusion of larger memories within digital systems, however, tends to increase the size of the systems, the cost of implementing the systems, and the amount of power consumed by the systems.